-- @owner: xue-xinyi610
-- @date: 2025/2/20
-- @testpoint: I8XDZ2 原有功能在新需求合入后不受影响，启用所有触发器。执行成功。

-- 步骤pre 1: 删除表如果存在
drop table if exists test_table;

-- 步骤pre 2: 创建测试表
CREATE TABLE test_table (id1 INT, id2 INT, id3 INT);

-- 步骤pre 3: 删除函数如果存在
drop function if exists test_function;

-- 步骤pre 4: 创建触发器函数
CREATE FUNCTION test_function() RETURNS TRIGGER AS
$$
DECLARE
BEGIN
    update test_table set id2 = 5 where id1 = 1;
    return NEW;
END
$$ LANGUAGE PLPGSQL;/

-- 步骤pre 5: 删除触发器如果存在
drop trigger if exists test_trigger on test_table;

-- 步骤pre 6: 创建触发器
CREATE TRIGGER test_trigger
BEFORE INSERT ON test_table
EXECUTE PROCEDURE test_function();/

-- 步骤pre 7: 禁用触发器
alter table test_table disable trigger test_trigger;

-- 步骤test 1: 启用所有触发器
alter table test_table enable trigger all;

-- 步骤post 1: 删除触发器
drop trigger if exists test_trigger on test_table;

-- 步骤post 2: 删除触发器函数
drop function if exists test_function;

-- 步骤post 3: 删除测试表
drop table if exists test_table;
